// IPlugin.hpp
#ifndef IPLUGIN_HPP
#define IPLUGIN_HPP

#include <QObject>
#include <QVariant>
#include "store/type/ActionWrapper.hpp"

/**
 * @brief IPlugin 接口，用于插件系统
 */
class IPlugin : public QObject {
    Q_OBJECT
public:
    explicit IPlugin(QObject *parent = nullptr) : QObject(parent) {}
    virtual ~IPlugin() {}

    virtual void onStateChanged(ActionWrapper::StateKey key, const QVariant &value) = 0;
    virtual void onActionDispatched(ActionWrapper::ActionType actionType, const QVariant &payload) = 0;
};

#endif // IPLUGIN_HPP
